博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原] Jenkins Android 自动打包配置(转)
阅读量:6829 次
发布时间:2019-06-26

本文共 4152 字,大约阅读时间需要 13 分钟。

一、Jenkins自动打包配置

目标:1. 自动打包;2. 自动上传;3. 友好下载

1. Jenkins简介

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。减少重复劳动,减少人工成本。
  • 持续、自动地构建/测试软件项目;
  • 监控一些定时执行的任务;

2. Jenkins配置

  • 添加git plugin和 role插件
  • 设置人员权限,根据角色授权
  • 启动访问http://ip/8080即可,见下3.1 开机自启脚本
  • 添加git项目,配置脚本,见下3.2 项目打包脚本3.3 Apk上传脚本

3. 自动化脚本

3.1 开机自启脚本

  • jenkins.sh
#! /bin/sh# chkconfig: 2345 10 90# description: jenkins ....# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. #prefix=/Users/laifeng/jenkins #nohup $prefix/jenkins_start.sh >> $prefix/jenkins.log 2>&1 & JENKINS_ROOT=/Users/laifeng/jenkins JENKINSFILENAME=jenkins.war stop(){ echo "Stoping $JENKINSFILENAME " ps -ef|grep $JENKINSFILENAME |awk '{print $2}'|while read pid do kill -9 $pid echo " $pid kill" done } case "$1" in start) echo "Starting $JENKINSFILENAME " nohup java -jar $JENKINS_ROOT/jenkins.war --httpPort=8080 >> $JENKINS_ROOT/jenkins.log 2>&1 & ;; stop) stop ;; restart) stop start ;; status) ps -ef|grep $JENKINSFILENAME ;; *) printf 'Usage: %s {start|stop|restart|status}\n' "$prog" exit 1 ;; esac
  • jenkins_start.sh
#!/bin/bashexport ANDROID_HOME=/usr/local/android-sdkexport GRADLE_HOME=/usr/local/gradle-2.2.1 export JENKINS_HOME=/Users/laifeng/.jenkins /Users/laifeng/jenkins/jenkins.sh start /usr/local/apache-tomcat-7.0.67/bin/startup.sh
  • Mac上开机自启
sudo defaults write com.apple.loginwindow LoginHook /path/to/script 设置/path/to/script = /Users/laifeng/jenkins/jenkins_start.sh

3.2 自动化打包和上传

项目打包脚本

目前是直接运行Gradle命令,可脚本完成复杂需求

./gradlew clean assembleDebug

Apk上传脚本

  • deploy.sh
#!/bin/shecho "deploy begin......"apkName=$1currDay=$(date +%Y-%m-%d)currTime=$(date +%H-%M-%S)deployPath="/Users/laifeng/jenkins/android-apks/${currDay}" #echo "$deployPath" # 创建文件夹 if [ ! -d "$deployPath" ]; then mkdir "$deployPath" fi # 拷贝文件到目录 workspaceApkFile="${WORKSPACE}/crazytogether/build/outputs/apk/crazytogether-debug.apk" deployApkFile="${deployPath}/${apkName}-${currTime}.apk" #echo "$workspaceApkFile" #echo "deployApkFile" cp ${workspaceApkFile} ${deployApkFile} echo "deploy success......"

Tomcat 文件服务器

1. 在tomcat安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download.xml    
2. 修改tomcat配置文件,文件目录\conf\web.xml,要将红色的false改为true
default
org.apache.catalina.servlets.DefaultServlet
debug
0
listings
false
1
3. 重启tomcat,访问http://127.0.0.1:8080/download

遇到的问题

  • 添加git 项目无法获得权限,创建ssh key ,把本地ssh key 公钥上传到你用户的git server ,在Jenkins 添加认证,ssh 私钥。
  • 自启动脚本无法顺利执行,缺少环境变量,启动的用户不一致,启动顺序有先后,在启动脚本里添加必须的环境变量
  • 自启动的脚本是系统启动的,和登陆用户不是一个环境

  • 先在本地运行保证脚本的正确性
  • 根据Log 查看什么错误

二、Jenkins邮件配置

目标:1. 构建自动发邮件;2. 邮件模板;3. 组织友好下载链接;

1. 邮件配置

  1. 添加插件:Email Extension Plugin
  2. 设置SMTP服务器:系统管理->系统设置->在Extended E-mail Notification项设置smtp service。注意设置的不是jenkins邮件通知项。
  3. 设置job邮件配置:
    • 在“增加构建后操作步骤”选择“Editable Email Notification”
    • Project Recipient List,设置接受邮箱,多个邮箱空格隔开即可
    • Content Type,选择为HTML
    • Default Subject,邮件标题
    • Default Content,邮件内容,可以写html
    • 注意:这些选项里面都可以使用“全局邮件变量”,
  4. 如何设置友好的下载链接:
    • 下载地址每次都会发生变化,主要是“时间变量”
    • “时间变量”,Day,Time需要设置到jenkins的环境变量中,这样后续执行才能共用这些变量,使用
    • “构建环境”:勾选“Inject environment variables to the build process”,在下面"Evaluated Groovy script"选项中设置groovy脚本,添加到环境变量
    • 修改“构建 Excute shell“ deploy.sh脚本,脚本中的时间变量不在是本地定义,而是使用上面设置的构建变量 ${CURR_DAY}, ${CURR_TIME}
    • 修改“Editable Email Notification”-> "Default Content",当前版本根据“时间变量”${CURR_DAY}, ${CURR_TIME}动态生产下载地址
  5. Evaluated Groovy script 添加如下脚本内容,后续的脚本中,可以引用${CURR_DAY}, ${CURR_TIME}

    TimeZone.setDefault(TimeZone.getTimeZone('Asia/Shanghai'))def now = new Date() def map = [CURR_DAY: now.format('yyyy-MM-dd'), CURR_TIME: now.format('HH-mm-ss')] return map
  6. Email Default Content 内容

文件下载:

当前版本:点击下载
历史版本:http://10.155.59.205:8081/download
构建信息:

项目名称:$PROJECT_NAME
构建编号:$BUILD_NUMBER
构建状态:$BUILD_STATUS
触发原因:${CAUSE}
构建日志地址:${BUILD_URL}console
构建地址:$BUILD_URL
变更集:${JELLY_SCRIPT,template="html"}

(本邮件是程序自动下发的,请勿回复!

2. 其他问题

  • smtp邮件服务一致无法正常发生,原因可能出在,ssl授权,smtp端口等问题上
  • 时区问题默认获得的时间少8小时,需要TimeZone为“Asia/Shanghai”

http://www.cnblogs.com/purediy/p/5160813.html

 

你可能感兴趣的文章
5. 数据类型
查看>>
Linux5.9无人值守安装
查看>>
test
查看>>
传说中的100句子记忆7000单词(1-50句)
查看>>
saltstack部署returner [三]
查看>>
Python-wingide快捷键
查看>>
10个可创建交互式地图的免费JavaScript工具
查看>>
Spring-项目中Spring 声明式事务使用的一些坑点分析02
查看>>
在Xcode中搭建真机调试环境
查看>>
百度地图2.0离线版的制作
查看>>
CentOS 5.5 系统安全配置
查看>>
中标麒麟操作系统V6安装NGINX
查看>>
VirtualBox+phpvirtualbox+扩展包
查看>>
跨库复制数据
查看>>
vsphere Client 5如何注册
查看>>
从零实现一个高性能网络爬虫(一)网络请求分析及代码实现
查看>>
Android笔记:intent方法使用总结
查看>>
ubuntu开启root用户登录
查看>>
我的友情链接
查看>>
防止SQL注入
查看>>